package com.tqjc.business.interactivewithscan.entity;

import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

import java.util.Comparator;

@AllArgsConstructor
@NoArgsConstructor
public class CoordSortForXY implements Comparator<Coord> {
    /**
     * 类型（吸料，放料）
     * 1：X轴由小到达，Y轴由小到大
     * 2：X轴由小到达，Y轴由大到小
     * 3：X轴由大到小，Y轴由小到大
     * 4：X轴由大到小，Y轴由大到小
     * <p>
     * 5：Y轴由大到小，X轴由大到小
     * 6：Y轴由大到小，X轴由大到小
     * 7：Y轴由大到小，X轴由大到小
     * 8：Y轴由大到小，X轴由大到小
     */
    private int type = 1;


    @Override
    public int compare(Coord o1, Coord o2) {
        switch (type) {
            case 1:
                if (o1.getX() == o2.getX()) {
                    return o1.getY() - o2.getY();
                }
                return o1.getX() - o2.getX();
            case 2:
                if (o1.getX() == o2.getX()) {
                    return o2.getY() - o1.getY();
                }
                return o1.getX() - o2.getX();
            case 3:
                if (o1.getX() == o2.getX()) {
                    return o1.getY() - o2.getY();
                }
                return o2.getX() - o1.getX();
            case 4:
                if (o1.getX() == o2.getX()) {
                    return o2.getY() - o1.getY();
                }
                return o2.getX() - o1.getX();
            case 5:
                if (o1.getY() == o2.getY()) {
                    return o1.getX() - o2.getX();
                }
                return o1.getY() - o2.getY();
            case 6:
                if (o1.getY() == o2.getY()) {
                    return o2.getX() - o1.getX();
                }
                return o1.getY() - o2.getY();
            case 7:
                if (o1.getY() == o2.getY()) {
                    return o1.getX() - o2.getX();
                }
                return o2.getY() - o1.getY();
            case 8:
                if (o1.getY() == o2.getY()) {
                    return o2.getX() - o1.getX();
                }
                return o2.getY() - o1.getY();
        }
        return 0;
    }
}
